-
Notifications
You must be signed in to change notification settings - Fork 3k
Add starred repository support to GitHub MCP server #1078
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add starred repository support to GitHub MCP server #1078
Conversation
Co-authored-by: tonytrg <[email protected]>
- Add ListStarredRepositories tool for listing starred repos - Add StarRepository tool for starring repositories - Add UnstarRepository tool for unstarring repositories - Update MinimalRepository struct with StarredAt field - Add comprehensive test coverage for all new functionality - Register new tools in the repos toolset Co-authored-by: tonytrg <[email protected]>
- Add list_starred_repositories tool documentation - Add star_repository tool documentation - Add unstar_repository tool documentation - Include comprehensive parameter descriptions for all new tools Co-authored-by: tonytrg <[email protected]>
Co-authored-by: tonytrg <[email protected]>
|
Preparing review... |
8 similar comments
|
Preparing review... |
|
Preparing review... |
|
Preparing review... |
|
Preparing review... |
|
Preparing review... |
|
Preparing review... |
|
Preparing review... |
|
Preparing review... |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR implements comprehensive starred repository functionality for the GitHub MCP server, enabling agents to search and manage starred repositories through natural language interactions.
- Adds three new tools:
list_starred_repositories,star_repository, andunstar_repository - Enables listing starred repositories for authenticated users or specific users with pagination and sorting options
- Provides tools to star and unstar repositories with proper error handling
- Updates the
MinimalRepositorystruct withstarred_atfield for tracking when repositories were starred
Reviewed Changes
Copilot reviewed 7 out of 9 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| pkg/github/tools.go | Registers the new starred repository tools in the repos toolset |
| pkg/github/repositories.go | Implements the three new starred repository functions with GitHub API integration |
| pkg/github/repositories_test.go | Adds comprehensive test coverage for all three new tools |
| pkg/github/toolsnaps/*.snap | Creates tool snapshots for testing and validation |
| README.md | Documents the new tools with parameter descriptions |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
| // Convert to minimal format | ||
| minimalRepos := make([]MinimalRepository, 0, len(repos)) | ||
| for _, starredRepo := range repos { | ||
| repo := starredRepo.Repository | ||
| minimalRepo := MinimalRepository{ | ||
| ID: repo.GetID(), | ||
| Name: repo.GetName(), | ||
| FullName: repo.GetFullName(), | ||
| Description: repo.GetDescription(), | ||
| HTMLURL: repo.GetHTMLURL(), | ||
| Language: repo.GetLanguage(), | ||
| Stars: repo.GetStargazersCount(), | ||
| Forks: repo.GetForksCount(), | ||
| OpenIssues: repo.GetOpenIssuesCount(), | ||
| Private: repo.GetPrivate(), | ||
| Fork: repo.GetFork(), | ||
| Archived: repo.GetArchived(), | ||
| DefaultBranch: repo.GetDefaultBranch(), | ||
| } | ||
|
|
||
| if repo.UpdatedAt != nil { | ||
| minimalRepo.UpdatedAt = repo.UpdatedAt.Format("2006-01-02T15:04:05Z") | ||
| } | ||
|
|
||
| minimalRepos = append(minimalRepos, minimalRepo) | ||
| } |
Copilot
AI
Sep 12, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The MinimalRepository struct is missing a StarredAt field that should be populated from starredRepo.StarredAt. The PR description mentions adding a starred_at field to track when repositories were starred, but this field is not being set in the conversion logic.
|
I removed the starred_at attribute from the minimal struct as i dont think this field is really needed often in 99% of all cases. |
|
|
vf |
* Initial plan * Initial exploration and planning for starred repository support Co-authored-by: tonytrg <[email protected]> * Implement starred repository functionality with comprehensive tests - Add ListStarredRepositories tool for listing starred repos - Add StarRepository tool for starring repositories - Add UnstarRepository tool for unstarring repositories - Update MinimalRepository struct with StarredAt field - Add comprehensive test coverage for all new functionality - Register new tools in the repos toolset Co-authored-by: tonytrg <[email protected]> * Update README documentation with starred repository tools - Add list_starred_repositories tool documentation - Add star_repository tool documentation - Add unstar_repository tool documentation - Include comprehensive parameter descriptions for all new tools Co-authored-by: tonytrg <[email protected]> * Add starred repository support to GitHub MCP server Co-authored-by: tonytrg <[email protected]> * remove starredat from minimal view * update descriptions * remove bin * dont commit the binary --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: tonytrg <[email protected]> Co-authored-by: tonytrg <[email protected]>
This PR implements comprehensive starred repository functionality for the GitHub MCP server, addressing the feature request to enable agents to search and manage starred repositories.
Also removes the github-mcp-server binary, which prob was accidentally commited.
What's Added
New Tools
list_starred_repositories- Lists starred repositories for the authenticated user or a specified userusernameparameter to list starred repos for any usercreated(when starred) orupdated(when repo was last pushed)MinimalRepositoryformat with additionalstarred_atfieldstar_repository- Stars a repositoryownerandrepoparametersunstar_repository- Unstars a repositoryownerandrepoparametersImplementation Details
starred_atfield toMinimalRepositorystruct to track when repositories were starred 🔴repostoolset (read-only for listing, write tools for starring/unstarring)Use Cases
This enables powerful agent workflows like:
API Coverage
Implements GitHub's starred repository REST API endpoints:
GET /user/starred- List starred repositories for authenticated userGET /users/{username}/starred- List starred repositories for specific userPUT /user/starred/{owner}/{repo}- Star a repositoryDELETE /user/starred/{owner}/{repo}- Unstar a repositoryThe implementation enables agents to leverage users' curated collections of starred repositories as a high-quality signal for dependency selection and project discovery, as mentioned in the original issue.
Additional instructions:
Fixes #414
💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click here to start the survey.